package cn.iocoder.yudao.module.vr.service.testoption;

import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.module.vr.controller.admin.test.vo.TestOption;
import cn.iocoder.yudao.module.vr.controller.admin.testoption.vo.*;
import cn.iocoder.yudao.module.vr.dal.dataobject.testoption.TestOptionDO;

import javax.validation.Valid;
import java.util.Collection;
import java.util.List;

/**
 * 试题选项 Service 接口
 *
 * @author 芋道源码
 */
public interface TestOptionService {

    /**
     * 创建试题选项
     *
     * @param createReqVO 创建信息
     * @return 编号
     */
    Long createTestOption(@Valid TestOptionCreateReqVO createReqVO);

    void createOptionsFormTest(Long testId, List<TestOption> testOptions);

    /**
     * 更新试题选项
     *
     * @param updateReqVO 更新信息
     */
    void updateTestOption(@Valid TestOptionUpdateReqVO updateReqVO);
    void updateTestOptionsFromTest(Long testId, List<TestOption> testOptions);
    /**
     * 删除试题选项
     *
     * @param id 编号
     */
    void deleteTestOption(Long id);

    /**
     * 根据试题ID，获取试题的所有选项配置
     * @param testId
     * @return
     */
    List<TestOption> getTestOptionListByTestId(Long testId);

    /**
     * 获得试题选项
     *
     * @param id 编号
     * @return 试题选项
     */
    TestOptionDO getTestOption(Long id);

    /**
     * 获得试题选项列表
     *
     * @param ids 编号
     * @return 试题选项列表
     */
    List<TestOptionDO> getTestOptionList(Collection<Long> ids);

    /**
     * 获得试题选项分页
     *
     * @param pageReqVO 分页查询
     * @return 试题选项分页
     */
    PageResult<TestOptionDO> getTestOptionPage(TestOptionPageReqVO pageReqVO);

    /**
     * 获得试题选项列表, 用于 Excel 导出
     *
     * @param exportReqVO 查询条件
     * @return 试题选项列表
     */
    List<TestOptionDO> getTestOptionList(TestOptionExportReqVO exportReqVO);

}
